﻿
namespace Model
{
	public abstract class Attribut
	{
		protected string name;
		public string Name
		{
			get { return name; }
			set { name = value; }
		}

		public Attribut(string name)
		{
			Name = name;
		}

		public abstract Attribut Copy();
	}

	public class Attribut<T> : Attribut
	{
		protected T value;
		public T Value
		{
			get { return this.value; }
			set { this.value = value; }
		}

		public Attribut(string name, T value)
			: base(name)
		{
			this.value = value;
		}

		public override Attribut Copy()
		{
			return new Attribut<T>(name, value);
		}
	}
}
